<?php

use Yaf\Application;
use Yaf\Controller_Abstract;
use const Yaf\VERSION;

/**
 * 默认控制器
 * @see http://www.php.net/manual/en/class.yaf-controller-abstract.php
 */
class IndexController extends Controller_Abstract
{
    /**
     * 默认初始化方法，如果不需要，可以删除掉这个方法
     * 如果这个方法被定义，那么在Controller被构造以后，Yaf会调用这个方法
     */
    public function init(): void
    {
        $this->getView()->assign("title", "Yaf Example");
    }

    /**
     * 默认动作
     * - Yaf支持直接把\Yaf\Request_Abstract::getParam()得到的同名参数作为Action的形参
     * - 对于如下的例子, 当访问http://yourhost/index/index/index/name/root 的时候, 你就会发现不同
     * @param string $name
     * @return bool
     */
    public function indexAction(string $name = "David"): bool
    {
        //1. fetch model
        $model = new SampleModel();

        //2. assign
        $this->getView()->assign("h1", $model->selectSample());
        $this->getView()->assign("content", 'Yaf Version:' . VERSION);
        $this->getView()->assign("name", $name);
        $this->getView()->assign("page", str_replace(BASE_PATH, '', __FILE__));

        //3. render by Yaf, 如果这里返回FALSE, Yaf将不会调用自动视图引擎Render模板
        return true;
    }

    /**
     * @return bool
     */
    public function phpinfoAction(): bool
    {
        phpinfo();
        return false;
    }
}
